System and method for transferring a call bridge between communication devices

ABSTRACT

An improved system and method are disclosed for conference bridging. In one example, the method enables a device engaged in a conference call as a participant to bridge the conference call and to transfer the bridge to another device engaged in the conference call as a participant.

INCORPORATION BY REFERENCE

This application incorporates by reference in their entirety U.S. Pat.No. 7,656,870, filed on Mar. 15, 2005, and entitled SYSTEM AND METHODFOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. Pat. No. 7,570,636, filedon Aug. 30, 2005, and entitled SYSTEM AND METHOD FOR TRAVERSING A NATDEVICE FOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. patent applicationSer. No. 12/705,925, filed on Feb. 15, 2010, and entitled SYSTEM ANDMETHOD FOR STRATEGIC ROUTING IN A PEER-TO-PEER ENVIRONMENT; and U.S.patent application Ser. No. 12/749,251, filed on Mar. 29, 2010, andentitled SYSTEM AND METHOD FOR SESSION SWEEPING BETWEEN DEVICES.

BACKGROUND

Conference call technology generally relies on a dedicated component,such as a switch or a conference hub, to handle conference callbridging. However, such technology may be expensive and lacksflexibility. Accordingly, what is needed are a system and method thataddresses these issues.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding, reference is now made to thefollowing description taken in conjunction with the accompanyingDrawings in which:

FIG. 1 is a simplified network diagram of one embodiment of anenvironment with three communication devices engaged in a conferencecall that is bridged on one of the devices.

FIG. 2 is a simplified diagram of one embodiment of a computer systemthat may be used as a communication device of FIG. 1.

FIG. 3A is a simplified diagram of an embodiment of a conference callmessage flow between the devices of FIG. 1 with one device as thebridge.

FIG. 3B is a simplified diagram of another embodiment of a conferencecall message flow between the devices of FIG. 1 after the bridge hasbeen transferred to another of the devices.

FIG. 4 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 to initiate a conferencecall and select one of the devices as the bridge.

FIG. 5 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 to transfer the bridgefrom one of the devices to another of the devices.

FIG. 6 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 when a change is detectedin one of the device's device and/or network parameters and the deviceis not the bridge.

FIG. 7 is a sequence diagram illustrating one embodiment of anotherprocess that may be executed by the devices of FIG. 1 when a change isdetected in one of the device's device and/or network parameters and thedevice is not the bridge.

FIG. 8 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 when a change is detectedin one of the device's device and/or network parameters and the deviceis the bridge.

FIG. 9 is a flow chart illustrating one embodiment of a method that maybe executed by one of the devices of FIG. 1 to initiate a conferencecall and select one of the devices as the bridge.

FIG. 10 is a flow chart illustrating one embodiment of a method that maybe executed by one of the devices of FIG. 1 to select one of the devicesas the bridge.

FIG. 11A is a flow chart illustrating one embodiment of a method thatmay be executed by one of the devices of FIG. 1 to determine whether abridge selection process should continue.

FIG. 11B is a flow chart illustrating one embodiment of a method thatmay be executed by one of the devices of FIG. 1 to determine whether theother devices have bridge functionality.

FIG. 12 is a flow chart illustrating one embodiment of a method that maybe executed by one of the devices of FIG. 1 in response to a requestfrom another of the devices for a conference call.

FIG. 13 is a flow chart illustrating one embodiment of a method that maybe executed by one of the devices of FIG. 1 when a change is detected inthe device's device and/or network parameters.

FIG. 14 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 to initiate a conferencecall and select one of the devices as the bridge.

FIG. 15 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 to transfer the bridgefrom one of the devices to another of the devices.

FIG. 16 is a sequence diagram illustrating one embodiment of anotherprocess that may be executed by the devices of FIG. 1 to transfer thebridge from one of the devices to another of the devices.

FIG. 17 is a sequence diagram illustrating one embodiment of a processthat may be executed by the devices of FIG. 1 when a change is detectedin one of the device's device and/or network parameters.

FIG. 18 is a sequence diagram illustrating one embodiment of anotherprocess that may be executed by the devices of FIG. 1 when a change isdetected in one of the device's device and/or network parameters.

FIG. 19 is a simplified network diagram of one embodiment of a hybridpeer-to-peer system.

FIG. 20 a illustrates one embodiment of an access server architecturethat may be used within the system of FIG. 19.

FIG. 20 b illustrates one embodiment of an endpoint architecture thatmay be used within the system of FIG. 19.

FIG. 20 c illustrates one embodiment of components within the endpointarchitecture of FIG. 20 b that may be used for cellular networkconnectivity.

FIG. 20 d illustrates a traditional softswitch configuration with twoendpoints.

FIG. 20 e illustrates a traditional softswitch configuration with threeendpoints and a media bridge.

FIG. 20 f illustrates one embodiment of the present disclosure with twoendpoints, each of which includes a softswitch.

FIG. 20 g illustrates one embodiment of the present disclosure withthree endpoints, each of which includes a softswitch.

FIG. 21 a is a sequence diagram illustrating the interaction of variouscomponents of FIG. 20 b when placing a call.

FIG. 21 b is a sequence diagram illustrating the interaction of variouscomponents of FIG. 20 b when receiving a call.

FIG. 22 is a sequence diagram illustrating an exemplary process by whichan endpoint of FIG. 19 may be authenticated and communicate with anotherendpoint.

DETAILED DESCRIPTION

The present disclosure is directed to a system and method for conferencecall bridging. It is understood that the following disclosure providesmany different embodiments or examples. Specific examples of componentsand arrangements are described below to simplify the present disclosure.These are, of course, merely examples and are not intended to belimiting. In addition, the present disclosure may repeat referencenumerals and/or letters in the various examples. This repetition is forthe purpose of simplicity and clarity and does not in itself dictate arelationship between the various embodiments and/or configurationsdiscussed.

Referring to FIG. 1, in one embodiment, an environment 100 isillustrated with three communication devices 102, 104, and 106. Examplesof such communication devices include cellular telephones (includingsmart phones), personal digital assistants (PDAs), netbooks, tablets,laptops, desktops, workstations, telepresence consoles, and any othercomputing device that can communicate with another computing deviceusing a wireless and/or wireline communication link. Such communicationsmay be direct (e.g., via a peer-to-peer network, an ad hoc network, orusing a direct connection), indirect, such as through a server or otherproxy (e.g., in a client-server model), or may use a combination ofdirect and indirect communications. Although only three devices 102,104, and 106 are illustrated, it is understood that other devices may bepresent in FIG. 1.

The user of the device 102 wants to establish a conference call with theusers of the devices 104 and 106. For purposes of example, theconference call is an audio/video call, but it is understood that it maybe any type of call in which a call bridge is needed. Of the devices102, 104, and 106, at least the device 102 has the ability to bridge theconference call itself. Accordingly, the device 102 is capable ofestablishing a communication session with the device 104, acommunication session with the device 106, and then operate as a bridgeto connect the two sessions for the conference call between the devices102, 104, and 106.

As will be described below, one or both of the devices 104 and 106 mayalso be capable of functioning as a bridge for the conference call. Inother words, each of the devices 102, 104, and 106 may include softwareand/or hardware that enable that device to establish and bridge aconference call while participating in the conference call. In suchcases, the device 102 may transfer the bridge to one of the otherdevices 102 and 104.

The network 108 may be a single network or may represent multiplenetworks, including networks of different types. For example, the device102 may be coupled to the device 104 via a network that includes acellular link coupled to a data packet network, and the device 102 maybe coupled to the device 106 via a data packet link such as a wide localarea network (WLAN) coupled to a data packet network or a PublicSwitched Telephone Network (PSTN). Accordingly, many different networktypes and configurations may be used to couple the communication devices102, 104, and 106 to one another.

Exemplary network, system, and connection types include the internet,WiMax, local area networks (LANs) (e.g., IEEE 802.11a and 802.11g wi-finetworks), digital audio broadcasting systems (e.g., HD Radio, T-DMB andISDB-TSB), terrestrial digital television systems (e.g., DVB-T, DVB-H,T-DMB and ISDB-T), WiMax wireless metropolitan area networks (MANs)(e.g., IEEE 802.16 networks), Mobile Broadband Wireless Access (MBWA)networks (e.g., IEEE 802.20 networks), Ultra Mobile Broadband (UMB)systems, Flash-OFDM cellular systems, and Ultra wideband (UWB) systems.Furthermore, the present disclosure may be used with communicationssystems such as Global System for Mobile communications (GSM) and/orcode division multiple access (CDMA) communications systems. Connectionsto such networks may be wireless or may use a line (e.g., digitalsubscriber lines (DSL), cable lines, and fiber optic lines).

Communication among the devices 102, 104, and 106 may be accomplishedusing predefined and publicly available (i.e., non-proprietary)communication standards or protocols (e.g., those defined by theInternet Engineering Task Force (IETF) or the InternationalTelecommunications Union-Telecommunications Standard Sector (ITU-T)),and/or proprietary protocols. For example, signaling communications(e.g., session setup, management, and teardown) may use a protocol suchas the Session Initiation Protocol (SIP), while data traffic may becommunicated using a protocol such as the Real-time Transport Protocol(RTP). A conference call as described herein may be connection-based(e.g., using a protocol such as the transmission controlprotocol/internet protocol (TCP/IP)) or connection-less (e.g., using aprotocol such as the user datagram protocol (UDP)). While the conferencecall is occurring, it is understood that other communications may occur,including, but not limited to, other audio and audio/video calls,instant messages, file transfer, emails, and any other type of resourcetransfer, where a resource represents any digital data.

Referring to FIG. 2, one embodiment of a computer system 200 isillustrated. The computer system 200 is one possible example of a systemcomponent or computing device such as one of the communication devices102, 104, and/or 106 of FIG. 1. The computer system 200 may include acontroller (e.g., a central processing unit (“CPU”)) 202, a memory unit204, an input/output (“I/O”) device 206, and a network interface 208.The components 202, 204, 206, and 208 are interconnected by a transportsystem (e.g., a bus) 210. A power supply (PS) 212 may provide power tocomponents of the computer system 200, such as the CPU 202 and memoryunit 204. It is understood that the computer system 200 may bedifferently configured and that each of the listed components mayactually represent several different components. For example, the CPU202 may actually represent a multi-processor or a distributed processingsystem; the memory unit 204 may include different levels of cachememory, main memory, hard disks, and remote storage locations; the I/Odevice 206 may include monitors, keyboards, and the like; and thenetwork interface 208 may include one or more network cards providingone or more wired and/or wireless connections to the network 108.Therefore, a wide range of flexibility is anticipated in theconfiguration of the computer system 200.

The computer system 200 may use any operating system (or multipleoperating systems), including various versions of operating systemsprovided by Microsoft (such as WINDOWS), Apple (such as Mac OS X), UNIX,and LINUX, and may include operating systems specifically developed forhandheld devices, personal computers, and servers depending on the useof the computer system 200. The operating system, as well as otherinstructions (e.g., for an endpoint engine as described in a laterembodiment if an endpoint), may be stored in the memory unit 204 andexecuted by the processor 202. For example, if the computer system 200is one of the devices 102, 104, and 106, the memory unit 204 may includeinstructions for performing some or all of the message sequences andmethods described herein.

Referring to FIG. 3A, an environment 300 illustrates one embodiment ofthe environment 100 of FIG. 1 where the device 102 is the bridge for theconference call. The device 102 has established a communication sessionwith each of the devices 104 and 106. The device 102 (also referred toas “A”) sends its own audio/video information to the device 104 (“B”) instream 302 and to the device 106 (“C”) in stream 304. In the presentexample, the information is streamed, but it is understood that it maybe transported in other ways. The device 104 (“B”) sends its ownaudio/video information to the device 102 (“A”) in stream 306, and thedevice 102 then sends B's information to the device 106 (“C”) in stream308. The device 106 (“C”) sends its own audio/video information to thedevice 102 (“A”) in stream 310, and the device 102 then sends C'sinformation to the device 104 (“B”) in stream 312.

Each device 102, 104, and 106 performs encoding for outbound traffic anddecoding for inbound traffic. For example, as the bridge, the device 102may be encoding outbound streams 302 and 304 (although these may be asingle encode in some embodiments), as well as outbound streams 308 and312. The device 102 may be decoding inbound streams 306 and 310. Thedevice 104 may be encoding outbound stream 306 and decoding inboundstreams 302 and 312. The device 106 may be encoding outbound stream 310and decoding inbound streams 304 and 308. Accordingly, the bridge device102 is generally performing more encoding than the other participants inthe conference call because it is handling more than its own traffic.

Using the device 102 as an example, the device 102 may performencoding/decoding for the conference call using various audio and videocodecs that provide different levels of audio and video quality. Forexample, the device 102 may support video codecs such as MPEG-4, H.261,H.263, H.264, as well as other versions of those codecs such as H.263+and H.263++. It is understood that many different codecs and codecversions may be used for audio and/or video encoding and decoding, andthat different codecs have different overhead requirements. Codecsproviding higher video framerates, video resolutions, audio bit rates,and similar parameters are generally more computationally intensive thancodecs that are unable to support those parameters and that operate atlower video framerates, video resolutions, and/or audio bit rates. Forexample, H.261 is generally less computationally intensive than H.264.Additional memory may increase the amount of buffering available,resulting in fewer dropped packets and more space for encoding/decoding.Variations in codecs and codec versions may also change parameters byincreasing or decreasing processing requirements relative to bandwidthrequirements.

Accordingly, the encoding/decoding capabilities of the device 102 may bedefined in part by its available processing power (e.g., CPU 202),available memory 204, and available bandwidth as accessed via thenetwork interface 208. The different devices 102, 104, and/or 106 mayhave different encoding/decoding capabilities. Accordingly, the devices102, 104, and/or 106 may be capable of handling different codecs,different numbers of connections, and similar conference call factors.For reasons such as these, one of the devices 102, 104, and/or 106 maybe more capable of serving as a bridge than the other devices, even ifthe capability is not controlled by the device itself (e.g., availablebandwidth).

Referring to FIG. 3B, an environment 320 illustrates one embodiment ofthe environment 300 of FIG. 3A where the device 102 has shifted thebridge to the device 104. Because of greater CPU, memory, and/orbandwidth capabilities, one of the devices 102, 104, and 106 may be moresuited to operate as the bridge for the conference call than the otherdevices. In the present illustration, the device 104 has greater CPU,memory, and/or bandwidth capabilities than the device 102.

Accordingly, the device 104 is now the bridge and has established acommunication session with each of the devices 102 and 106. The device104 (“B”) sends its own audio/video information to the device 102 (“A”)in stream 322 and to the device 106 (“C”) in stream 324. The device 102(“A”) sends its own audio/video information to the device 104 (“B”) instream 326, and the device 104 then sends A's information to the device106 (“C”) in stream 328. The device 106 (“C”) sends its own audio/videoinformation to the device 104 (“B”) in stream 330, and the device 104then sends C's information to the device 102 (“A”) in stream 332.

It is understood that the sequence diagrams and flow charts describedherein illustrate various exemplary functions and operations that mayoccur within various communication environments. It is understood thatthese diagrams are not exhaustive and that various steps may be excludedfrom the diagrams to clarify the aspect being described. For example, itis understood that some actions, such as network authenticationprocesses and notifications, may have been performed prior to the firststep of a sequence diagram by one or more of the communication devices102, 104, and 106. Such actions may depend on the particular type andconfiguration of each communication device 102, 104, and 106, includinghow network access is obtained (e.g., cellular or WLAN access). Otheractions may occur between illustrated steps or simultaneously withillustrated steps, including network messaging for call maintenance(including handoffs), communications with other devices (e.g., email,text messages, and/or voice calls (including conference calls)), andsimilar actions.

Referring to FIG. 4, a sequence diagram illustrates one embodiment of amessage sequence 400 that may occur in the environment of FIG. 1 toestablish a conference call, such as the conference call illustrated inFIG. 3A. In the present example, each of the devices 102, 104, and 106is able to operate as a bridge for the call.

In step 402, the device 102 sends a request for a communication sessionto the device 104. The request may identify that the communicationsession is for a conference call and may identify the device 106 asanother participant in the conference call. The request may alsoidentify media parameters for the communication session, such as one ormore audio and/or video codecs that the device 102 has available for thecall. The codecs may be presented with codecs that are preferred by thedevice 102 denoted as such. For example, if the device 102 is able tosupport H.261, H.263, and H.264 for the conference call, it may presentH.264 as its preferred codec, followed by H.263, with H.261 as anavailable but least preferred codec.

In step 404, the device 104 returns various parameters, including mediaparameters, device parameters, and network parameters. The mediaparameters may include one or more audio and/or video codecs availableon the device 104, and/or may present codecs selected by the device 104from the codecs available on the device 102. For example, of the H.261,H.263, and H.264 codecs available on the device 102, the device 104 mayonly be capable of supporting H.261. Accordingly, the device 104 wouldidentify H.261 as a media parameter in step 404. The device parametersmay include information about the device 104, such as the processing(e.g., CPU) capability and/or the available memory of the device. Thenetwork parameters may include the bandwidth available to the device104, and may be specifically directed to the upstream bandwidth (i.e.,the bandwidth available to the device 104 for outbound traffic).

In step 406, the device 102 sends a request for a communication sessionto the device 106. The request may identify that the communicationsession is a conference call and may identify the device 104 as anotherparticipant in the conference call. The request may also identify mediaparameters for the communication session, such as one or more audioand/or video codecs that the device 102 has available for the call. Theaudio/video codecs in the request 406 may be the same codecs sent to thedevice 104 or may be different. For example, if the device 102 hasreceived the codecs available on the device 104 prior to sending therequest in step 406, the device 102 may send only codecs that areavailable on both of the devices 102 and 104. In step 408, the device106 returns various parameters, including media parameters, deviceparameters, and network parameters as described with respect to step404.

In step 410, the device 102 selects which of the devices 102, 104, and106 are to be used as a bridge. In the present example, all of thedevices 102, 104, and 106 are able to serve as a bridge (e.g., each hasthe functionality needed to provide bridge services). Accordingly, thedevice 102 may compare the device parameters (e.g., the processing andavailable memory parameters) and/or the network parameters (e.g., theavailable bandwidth) of the devices 102, 104, and 106. In embodimentswhere one or both of the other devices 104 and 106 do not include bridgefunctionality, device(s) not able to bridge may not be compared. Forexample, if the device 106 does not include bridge functionality, thedevice 102 may compare only the device and/or network parameters of thedevices 102 and 104. In such embodiments, the device 102 may not receivethe device/network parameters of the device 106. In the present example,the device 102 selects itself as the best device to handle the bridge.For example, the device 102 may have better processing capabilities thanthe devices 104 and 106 (e.g., may be able to handle theencoding/decoding requirements of the bridge better due to additionalCPU and/or memory capabilities) and/or may have more availablebandwidth.

The device 102 may select session parameters for the communicationsessions with the devices 104 and 106, such as codecs to be used. Thedevice 102 may select the same parameters for both sessions or mayselect different parameters for each session. More specifically, thedevice 102 may normalize or optimize the sessions. For a normalizedsession, the device 102 identifies and selects the best codec to usewith both the device 104 and the device 106. For example, if the device102 supports H.264, the device 104 supports H.261 but not H.264, and thedevice 106 supports H.264, the device 102 may normalize to H.261 forboth the session with the device 104 and the session with the device106. For an optimized session, the device 102 would selects the bestcoded for each session individually. Accordingly, the device 102 mayselect H.261 for the session with the device 104 and H.264 for thesession with the device 106. Optimized sessions for the conference callmay be more overhead intensive for the bridge than normalized sessionsas different encoding and decoding codecs may be used for differentsessions, and codec conversions are needed to bridge the sessions.

In steps 412 and 414, the device 102 sends the session parameters to thedevices 104 and 106, respectively. In steps 416 and 418, the device 102establishes the communication sessions with the devices 104 and 106based on the session parameters. For purposes of the conference call,these sessions may serve as call legs. In step 420, the device 102bridges the two sessions and serves as the bridge for the conferencecall while also participating in the conference call.

Referring to FIG. 5, a sequence diagram illustrates one embodiment of amessage sequence 500 that may occur in the environment of FIG. 1 toshift the bridge for the conference call from the device 102 to thedevice 104. The device 102 may be setting the conference call up whenthe shift is made (e.g., in step 410 of FIG. 4 before the sessions insteps 416 and 418 are established) or the conference call may be anexisting conference call that is shifted after an event occurs, such asa change in parameters as discussed in detail below. For example, step502 may be identical to step 410 of FIG. 4 and the steps of FIG. 5 mayoccur instead of the steps following step 410 of FIG. 4. Alternatively,step 502 may occur after the conference call of FIG. 4 is set up, suchas during step 420. In the present example, each of the devices 102,104, and 106 is able to operate as a bridge for the call.

In step 502, the device 102 may select which of the devices 102, 104,and 106 are to be used as a bridge. In the present example, all of thedevices 102, 104, and 106 are able to serve as a bridge (e.g., each hasthe functionality needed to provide bridge services). Accordingly, thedevice 102 may compare the device parameters (e.g., the CPU andavailable memory parameters) and/or the network parameters (e.g., theavailable bandwidth) of the devices 102, 104, and 106. In embodimentswhere one or both of the other devices 104 and 106 do not include bridgefunctionality, device(s) not able to bridge would not be compared. Forexample, if the device 106 does not include bridge functionality, thedevice 102 may compare only the device and/or network parameters of thedevices 102 and 104. In such embodiments, the device 102 may not receivethe device and network parameters of the device 106. In the presentexample, the device 102 selects the device 104 as the device that is tohandle the bridge.

In step 504, the device 102 sends a notification to the device 104 thatthe device 104 is to be the bridge. The notification may be aninstruction to the device 104 or a request that the device 104 take overas the bridge. The notification may also terminate the current sessionwith the device 104 or place it on hold. In step 506, the device 102 mayalso send a message to the device 106 to terminate or hold the currentsession with the device 106. This message may be sent later in someembodiments, such as after step 508. In still other embodiments, thedevice 104 may inform one or both of the devices 102 and 106 that theyare to terminate or hold their current sessions.

At this point, the device 104 may function in a similar or identicalmanner to that described with respect to the device 102 in FIG. 4 forcall setup. Accordingly, in step 508, the device 104 sends a request fora communication session to the device 104 and, in step 510, the device102 returns various parameters, including media parameters, deviceparameters, and network parameters. In some embodiments, the device 102may send the parameters for the device 102 with or in addition to thenotification of step 504, in which case steps 508 and 510 may not beperformed. In step 512, the device 104 sends a request for acommunication session to the device 106 and, in step 514, the device 106returns various parameters, including media parameters, deviceparameters, and network parameters. In some embodiments, the device 102may send the parameters for the device 104 with or in addition to thenotification of step 504, in which case steps 512 and 514 may not beperformed.

In step 516, the device 104 may select which of the devices 102, 104,and 106 are to be used as a bridge. For example, the device 104 mayexecute the same logic as described previously with respect to thedevice 102. In other embodiments, step 516 may be omitted and the device104 may rely on the decision made by the device 102 in step 502. Thedevice 104 may select session parameters for the communication sessionswith the devices 102 and 106 as described previously with respect to thedevice 102. In other embodiments, the device 104 may use parametersreceived from the device 102. In steps 518 and 520, the device 104 sendsthe session parameters to the devices 102 and 106, respectively.

In steps 522 and 524, the device 104 establishes the communicationsessions with the devices 102 and 106 based on the session parameters.For purposes of the conference call, these sessions may serve as calllegs. In step 526, the device 104 bridges the two sessions and serves asthe bridge for the conference call. Accordingly, the bridge istransferred from the device 102 to the device 104 and the conferencecall continues.

It is noted that a similar or identical sequence may be used when thedevice serving as the bridge is to leave a conference call. For example,if the device 102 is the bridge and is exiting the conference call, itmay initiate a bridge transfer to one of the devices 104 or 106 toenable the call to continue between the devices 104 and 106. In otherembodiments, the device 102 may notify the other device or devices thatit is leaving and one of the other devices may then initiate a regularcall if there are only two devices remaining.

Referring to FIG. 6, a sequence diagram illustrates one embodiment of amessage sequence 600 that may occur in the environment of FIG. 1 when achange occurs in the device and/or network parameters of the device 104,which is not the current bridge for the conference call. For example,the device 104 may move from one network to another network, and thatnetwork change may increase or decrease the amount of bandwidthavailable to the device 104. The device 104 may also be swept to anotherdevice while the communication session with the device 102 ismaintained. Such sweeping is described in U.S. patent application Ser.No. 12/749,251, filed on Mar. 29, 2010, and entitled SYSTEM AND METHODFOR SESSION SWEEPING BETWEEN DEVICES. The sweeping from one device toanother device may change the device parameters, such as processingcapability and/or available memory. Either of the device and networkchanges may affect the capability of the device 104 to serve as abridge.

Accordingly, in step 602, the device 104 detects a change in its deviceand/or network parameters. In step 604, the device 104 sends the changedparameters to the device 102. In some embodiments, the device 104 maycompare the changed parameters to the previous parameters and only sendthe changed parameters if they affect the communication session relativeto the previous parameters. For example, if the only change occurredwith the available memory of the device 104, the device 104 may notifythe device 102 if the available memory of the device 104 has increased,while the device 104 may not notify the device 102 if the availablememory has decreased unless it affects the current codec(s) used in thesession. The change may also affect the media supported by the device104. For example, if the device 104 is swept to a device that hasgreater processing and/or memory capabilities and/or availablebandwidth, the device 104 may be able to handle H.264 media rather thanthe H.261 media handled by the previous device.

In step 606, the device 102 may perform the bridge selection process aspreviously described to determine whether the bridge should be moved. Insome embodiments, the device 102 may recalculate the bridge based on theparameters of all three devices 102, 104, and 106. In other embodiments,the device 102 may only compare the devices 102 and 104 because, forexample, the device 102 is the current bridge and the device 106 has notchanged. As the device 106 has not changed, the device 102 should stillselect itself as the bridge over the device 106. In the present example,the device 102 is still a better bridge than the device 104 and selectsitself as the bridge (e.g., the device 102 remains the bridge).

In step 608, if the media parameters have changed (e.g., if the sessionsare normalized and the media has changed from H.261 to H.264), thedevice 102 may change its own media parameters. For example, the device102 may switch from H.261 encoders/decoders to H.264 encoders/decoders.It is understood that in normalized sessions, the device 102 may changethe media parameters associated with both sessions. In optimizedsessions, the device 102 may only change the encoders/decoderscorresponding to the session with the device 104. In still otherembodiments, the device 102 may switch from normalized sessions tooptimized sessions or from optimized sessions to normalized sessionsbased on the changed parameters.

In step 610, the device 102 may send the changed parameters to thedevice 104 and, in step 612, the device 104 may update its sessionparameters. In step 614, the device 102 may send the changed parametersto the device 106 and, in step 616, the device 106 may update itssession parameters. In step 618, the device 102 continues to bridge thesessions for the conference call.

It is noted that a similar or identical sequence may occur if anotherdevice is added to the conference call. For example, if a fourth devicejoins the call, the device 102 may establish a communication sessionwith the fourth device and treat the addition of the fourth device as achange in the conference call, thereby triggering the bridge and/ormedia selection process. Accordingly, the addition of a fourth device tothe conference call may result in a bridge transfer and/or new mediaparameters for one or more of the devices involved in the call.

Referring to FIG. 7, a sequence diagram illustrates one embodiment of amessage sequence 700 that may occur in the environment of FIG. 1 when achange occurs in the device and/or network parameters of the device 104,which is not the current bridge for the conference call. For example,the device 104 may move from one network to another network, and thatnetwork change may increase or decrease the amount of bandwidthavailable to the device 104. The device 104 may also be swept to anotherdevice while the communication session with the device 102 ismaintained. Such sweeping is described in U.S. patent application Ser.No. 12/749,251, filed on Mar. 29, 2010, and entitled SYSTEM AND METHODFOR SESSION SWEEPING BETWEEN DEVICES. The sweeping from one device toanother device may change the device parameters, such as processingcapability and/or available memory. Either of the device and networkchanges may affect the capability of the device 104 to serve as abridge.

Accordingly, in step 702, the device 104 detects a change in its deviceand/or network parameters. In step 704, the device 104 sends the changedparameters to the device 102. In some embodiments, the device 104 maycompare the changed parameters to the previous parameters and only sendthe changed parameters as described with respect to FIG. 6.

In step 706, the device 102 may perform the bridge selection process aspreviously described to determine whether the bridge should be moved. Insome embodiments, the device 102 may recalculate the bridge based on theparameters of all three devices 102, 104, and 106. In other embodiments,the device 102 may only compare the devices 102 and 104 because, forexample, the device 102 is the current bridge and the device 106 has notchanged. As the device 106 has not changed, the device 102 should stillselect itself as the bridge over the device 106. In the present example,the device 102 determines that the device 104 should serve as the bridgerather than the device 102 and selects the device 104 as the bridge.

In step 708, the device 102 sends a notification to the device 104 thatthe device 104 is to be the bridge. In step 710, the device 104 performsa bridge setup process as previously described. This may include theestablishment of new sessions between the devices 102 and 104 and thedevices 104 and 106, as well as the tearing down of previous sessions.In step 612, the conference call is continued with the device 104serving as the bridge rather than the device 102.

Referring to FIG. 8, a sequence diagram illustrates one embodiment of amessage sequence 800 that may occur in the environment of FIG. 1 when achange occurs in the device and/or network parameters of the device 102,which is the current bridge for the conference call. For example, thedevice 102 may move from one network to another network, and thatnetwork change may increase or decrease the amount of bandwidthavailable to the device 102. The device 102 may also be swept to anotherdevice while the communication sessions with the devices 104 and 106 aremaintained. Such sweeping is described in U.S. patent application Ser.No. 12/749,251, filed on Mar. 29, 2010, and entitled SYSTEM AND METHODFOR SESSION SWEEPING BETWEEN DEVICES. The sweeping from one device toanother device may change the device parameters, such as processingcapability and/or available memory. Either of the device and networkchanges may affect the capability of the device 102 to serve as abridge.

Accordingly, in step 802, the device 102 detects a change in its deviceand/or network parameters. In steps 804 and 806, the device 102 may sendforwarding messages to the devices 104 and 106, respectively. Forexample, if the device 102 is being swept to another device, theforwarding messages may instruct the devices 104 and 106 to hold thecall until the sweep is finished and/or switch to another networkaddress/port for the device 102. In some embodiments, the device 102 maydetermine whether the change affects the conference call (e.g., whetherthe change is a handoff of the device 102 from one network to anothernetwork with no network address/port change) and may send the forwardingnotifications of steps 804 and 806 only if the notifications are needed.In step 808, the device 102 may perform bridge and/or session parameterselection as previously described.

Referring to FIG. 9, a flowchart illustrates one embodiment of a method900 that represents a process by which a communication device such asthe device 102 of FIG. 1 may initiate a conference call with otherdevices such as the devices 104 and 106. In the present example, thedevices 102, 104, and 106 may all serve as a bridge.

In step 902, a request for a communication session is sent by the device102 to the devices 104 and 106. The request may contain informationidentifying that the session is for a conference call, the conferencecall participants, and/or available media options. In step 904, thedevice 102 receives responses from the devices 104 and 106 with media,device, and/or network parameters for each device. In step 906, thedevice and network parameters are compared to identify which of thedevices 102, 104, and 106 should operate as the bridge for theconference call. In step 908, a determination is made as to whether oneof the other devices 104 and 106 is to be the bridge. If one of thedevices 104 or 106 is to be the bridge instead of the device 102, themethod 900 moves to step 910, where a message is sent to the deviceselected as the bridge to shift the bridge to that endpoint. If thedevice 102 is to be the bridge, the method 900 moves to step 912.

In step 912, the media parameters are selected for the sessions. Asdescribed previously, the sessions may be normalized or optimized, sothe sessions may have the same or different media parameters. In step914, the media parameters for each session are sent to the other devices104 and 106. In step 916, the sessions are established with each of theother devices 104 and 106 and the device 102 bridges the sessions forthe conference call. The device 102 may then participate in theconference call with the devices 104 and 106 while serving as the callbridge.

Referring to FIG. 10, a flowchart illustrates one embodiment of a method1000 that represents a process by which a device such as the device 102of FIG. 1 may select a bridge for a conference call. For example, themethod 1000 may be used in step 906 to determine which of the devices102, 104, and 106 should serve as the bridge. In the present example,the devices 102, 104, and 106 may all serve as a bridge. It isunderstood that other comparisons may be made to select the bridge ifadditional devices are present.

For purposes of illustration, the method 1000 refers to device 102 as“A,” device 104 as “B,” and device 106 as “C.” The device 104 (“A”) hasa corresponding processing capability denoted A_(CPU), an availablememory A_(MEM), and an available bandwidth A_(BW). The devices 104 (“B”)and 106 (“C”) have corresponding parameters. It is understood that theparameters may be measured in different ways and may take into accountmany different factors. For example, A_(CPU) may take into account theactual CPU of the device 102, including whether the CPU is single coreor multi-core, the amount of cache memory of the CPU, the threadingcapabilities of the CPU, and similar factors. Accordingly, A_(CPU) maybe a single parameter representing one or more factors or may bemultiple parameters. A_(MEM) may take into account the various types ofavailable memory, and A_(MEM) may be a single parameter representing oneor more factors or may be multiple parameters. A_(BW) may take intoaccount the overall available bandwidth of the device, including theupstream and downstream bandwidths, or may represent a particular factorof the bandwidth (e.g., upstream bandwidth). Accordingly, A_(BW) may bea single value representing one or more factors or may be multipleparameters. Any of the parameters represented by A_(CPU), A_(MEM), andA_(BW) may be weighted, as may individual factors forming theparameters.

In step 1002, the method 1000 determines whether the processingcapability of B is greater than the processing capability of A (i.e.,B_(CPU)>A_(CPU)), whether B has more available memory than A (i.e.,B_(MEM)>A_(MEM)), and whether B has more available bandwidth than A(i.e., B_(BW)>A_(BW)). In the present example, all three comparisonsmust be in B's favor in order for B to be considered as a bridge. Inother embodiments, one or more of the parameters may be sufficient(e.g., two out of three in B's favor may be enough), and the parametersmay be weighted to alter the results. For example, bandwidth may beweighted compared to processing and memory, in which case B may beselected if it has the most available memory and bandwidth, even if Ahas more processing capability.

If the determination of step 1002 identifies that B is more suitable asa bridge than A, the method 1000 moves to step 1004, where adetermination is made as to whether the processing capability of B isgreater than the processing capability of C (i.e., B_(CPU)>C_(CPU)),whether B has more available memory than C (i.e., B_(MEM)>C_(MEM)), andwhether B has more available bandwidth than C (i.e., B_(BW)>C_(BW)). Aswith step 1002, in the present example, all three comparisons must be inB's favor in order for B to be considered as a bridge, although otherembodiments may not have the same requirement. If the determination ofstep 1004 results in the selection of B as the bridge over C, the method1000 moves to step 1006, where the bridge is shifted to B as describedin other embodiments.

If the determination of step 1002 does not result in the selection of Bas the bridge over A or if the determination of step 1004 does notresult in the selection of B as the bridge over C, the method 1000 movesto step 1008. In step 1008, a determination is made as to whether theprocessing capability of C is greater than the processing capability ofA (i.e., C_(CPU)>A_(CPU)), whether C has more available memory than A(i.e., C_(MEM)>A_(MEM)), and whether C has more available bandwidth thanA (i.e., C_(BW)>A_(BW)). As with step 1002, in the present example, allthree comparisons must be in C's favor in order for C to be consideredas a bridge, although other embodiments may not have the samerequirement. If the determination of step 1008 results in the selectionof A as the bridge over C, the method 1000 moves to step 1010, where thebridge remains with A as described in other embodiments. If thedetermination of step 1008 results in the selection of C as the bridgeover A, the method 1000 moves to step 1012, where the bridge is shiftedto C as described in other embodiments.

Referring to FIG. 11A, a flowchart illustrates one embodiment of amethod 1100 that represents a process by which a device such as thedevice 102 of FIG. 1 may determine whether to continue with a bridgeselection process. For example, if an event occurs that triggers orwould trigger the bridge selection process, the method 1100 may beexecuted to determine whether to continue with the process or whetherthe process should be skipped (if not yet started) or aborted (ifalready started).

In step 1102, the bridge selection process is triggered and, in step1104, the event that triggered the bridge selection process isidentified. The event may be the initiation of a conference call, achange in the device/network parameters of one of the devicesparticipating in the conference call, the addition of another device tothe conference call, or any other event that results in execution of thebridge selection process.

In step 1106, a determination is made as to whether the bridge selectionprocess should continue. The bridge selection process may be allowed tocontinue or skipped/aborted based on various factors. For example, ifthe bridge selection process was triggered when the device 102 receivedparameters from the devices 104 and 106 after initiating a conferencecall, it may be allowed to continue in order to select the bridge to beused for the conference call. A change in device/network parametersand/or the addition of a new device to the conference call may alsoenable the bridge selection process to continue unless such changesbegin occurring relatively quickly. More specifically, it may not bedesirable to repeatedly change bridge devices within a certain timeframe. For example, if one of the devices is repeatedly changingnetworks and the networks vary in quality enough to result in frequentbridge shifts, it may be desirable to limit the bridge shifting to avoidthe additional overhead imposed by bridge transfer, such as sessionsetup and teardown.

It is understood that such limitations may or may not include a stricttime limitation, but may be based on one or more other factors, such asan amount of overhead imposed by bridge shifting versus the benefitgained by bridge shifting. Furthermore, if time limitations areinvolved, they may be varied for various reasons. Accordingly, step 1106may vary based on such factors as available bandwidth andprocessing/memory capabilities of the devices themselves. For example,if the device/network parameters of the device 102 are close to those ofthe device 104, frequent bridge switching may be prevented due torelatively minor performance gains and/or slow bridge transfers or maybe allowed due to relatively fast transfers. Such decisions may be madedynamically by the device 102 to handle different conferencingscenarios.

If the determination of step 1106 determines that the bridge selectionprocess should not continue, the method 1100 moves to step 1108, wherethe bridge selection process is skipped/aborted and the conference callcontinues. If the determination of step 1106 determines that the bridgeselection process should continue, the method 1100 moves to step 1110,where the bridge selection process is performed as previously described.

Referring to FIG. 11B, a flowchart illustrates one embodiment of amethod 1120 that represents a process by which a device such as thedevice 102 of FIG. 1 may determine whether another device (e.g., thedevice 104 or 106) includes bridge functionality. For example, thedevice 106 may not be configured to provide bridge functions if it is anaudio/video component of a teleconference system. In another example,the device 106 may be a regular landline telephone coupled to the restof the network 108 via a PSTN, and may not be capable of operating as abridge and, in some embodiments, may not be capable of receiving orsending video. In still another example, the device 106 may be capableof serving as a bridge, but may not be configured to do so (e.g., maylack the software needed to perform bridge functions). Accordingly, thedevice 102 may determine whether the other devices contain suchfunctionality.

The process used to determine whether another device may contain bridgefunctionality may vary depending on the device 102. For example, thedevice 102 may be an endpoint in a peer-to-peer network, such as isdescribed below and in U.S. Pat. No. 7,656,870, filed on Mar. 15, 2005,and entitled SYSTEM AND METHOD FOR PEER-TO-PEER HYBRID COMMUNICATIONS.If an endpoint, the device 102 may determine whether the devices 104 and106 are buddy endpoints. If so, the device 102 may use that knowledge todetermine whether they are capable of operating as bridges. For example,any endpoint capable of logging into an access server of thepeer-to-peer network may have the functionality needed to serve as anendpoint. If the other endpoint is not a buddy of the device 102, thedevice 102 may request the establishment of a temporary buddyrelationship in order to establish the session with that endpoint. Ifthe other device is not an endpoint, the device 102 may not include itin bridge calculations or may include it only if it returns the neededparameters.

If the device 102 is not an endpoint in a peer-to-peer network, it maydetermine whether to include another device in the bridge calculationsbased on what it knows of the other device. For example, if the device102 sends media parameters to the other device and does not receivedevice and/or network parameters in return, the device 102 may concludethat the other device is not configured to handle bridging. In suchembodiments, the device 102 may perform the bridge calculations basedonly on devices from which it received device/network parameters.

Accordingly, in step 1122, the device 102 may send a request for acommunication session to the other devices 104 and 106 that are to beincluded in the conference call. As described previously, the requestmay contain media parameters. The media parameters may be used to set upa session regardless of whether the other device is capable of being abridge. For example, if the other device is a mobile device or desktopcomputer that is not configured with bridging functionality, it may usethe media parameters to set up the session even though it cannot serveas a bridge. In other embodiments, the device 102 may have alreadyidentified certain of the devices 104 and 106 as not needing some or allof the media parameters, and so may not send the parameters to thosedevices. For example, the device 102 may have already identified thatthe device 106 is a PSTN coupled landline telephone without videocapability, and so the device 102 may not send video parameters to thedevice 106.

In step 1124, a determination may be made as to whether the device 102has received media/device/network parameters from either of the devices104 and 106. If no parameters have been received, the method 1110 movesto step 1126, where the device 102 may skip the bridge selection processand continue with session establishment and bridging for the conferencecall on the assumption that the devices 104 and 106 cannot serve as abridge. If media/device/network parameters have been received, thedevice 102 may continue to step 1128, where it continues with the bridgeselection process as previously described. It is understood thatreceiving only media parameters may not be sufficient for moving themethod from step 1124 to step 1128, since the responding device may becapable of handling a particular level of media as a participant but notas the bridge, or the device may not be configured as a bridge.

Referring to FIG. 12, a flowchart illustrates one embodiment of a method1200 that represents a process by which a device such as the device 104of FIG. 1 may establish a communication session initiated by anotherdevice (e.g., the device 102). In the present example, the device 104includes bridge functionality.

In step 1202, a request for a communication session is received by thedevice 104 from the device 102. The request may contain media parametersfor the session, such as what media options are supported by the device102. In step 1204, assuming the device 104 accepts the request, thedevice 104 sends its media, device, and network parameters to the device102. In step 1206, a determination may be made as to whether a messageto establish the session is received from the device 102. The messagemay contain media parameters to use for the session. If thedetermination of step 1206 indicates that a message was received, themethod 1200 moves to step 1208, where the session is established usingthe media parameters.

If the message to establish the session was not received, the method1200 moves to step 1210, where a determination may be made as to whethera message to shift the bridge to the device 104 has been received. Ifsuch a bridge transfer message has been received, the method 1200 movesto step 1212, where the device 104 performs session establishment andbridging as previously described. In some embodiments, step 1212 mayinclude performing a bridge selection process. If no bridge transfermessage has been received, the method 1200 may move to step 1214, wherea determination is made as to whether a timeout has occurred. If notimeout has occurred, the method 1200 returns to step 1206. If a timeouthas occurred, the method 1200 may end in step 1216.

Referring to FIG. 13, a flowchart illustrates one embodiment of a method1300 that represents a process by which a device such as the device 102of FIG. 1 may handle a change in its device and/or network parameters.When the method 1300 begins, the device 102 is engaged in a conferencecall with the endpoints 104 and 106.

In step 1302, a change is detected in one or more of the device and/ornetwork parameters of the device 102. For example, the device 102 maymove from one network to another or may be swept to another device. Instep 1304, a determination may be made as to whether the device 102 isthe current bridge for the conference call. If the device 102 is thecurrent bridge, the method 1300 moves to step 1306, where a bridgeselection process is performed as previously described using the changedparameters. After the bridge selection process, a determination is madein step 1308 as to whether the device 102 is still selected as thebridge. If not (i.e., if another device is to be the bridge), the method1300 moves to step 1310, where the bridge is transferred to the otherdevice. If the device 102 is to remain the bridge, the method 1300 movesto step 1312, where a determination may be made as to whether thesession parameters should be updated. If the session parameters are notto be updated, the method 1300 moves to step 1318, where the conferencecall continues without changes.

If the session parameters are to be updated as determined in step 1312,the method 1300 moves to step 1314, where updated session parameters aresent to the other devices in the conference call. In step 1316, thedevice 102 updates its own parameters for the sessions. The method 1300then moves to step 1318, where the conference call continues with thechanged parameters.

If the device is not the current bridge as determined in step 1304, themethod 1300 moves from step 1304 to step 1320, where the changedparameters are sent to the current bridge. For example, if the device104 is the current bridge, the device 102 may send its changedparameters to the device 104. In step 1322, a determination is made asto whether changed session parameters have been received from thebridge. For example, if the device 102 sends its changed parameters tothe bridge, the bridge may determine that it should remain the bridge,but may send out updated session parameters.

If the determination of step 1322 identifies that new parameters havebeen received, the method 1300 moves to step 1316, where it updates itsparameters. The method 1300 then moves to step 1318, where theconference call continues with the changed parameters. If thedetermination of step 1322 identifies that no new parameters have beenreceived, the method 1300 moves to step 1324, where a determination ismade as to whether a message has been received indicating that thedevice 102 is to be the bridge for the conference call. If no messagehas been received indicating that the device 102 is to be the bridge,the method 1300 moves to step 1318, where the conference call continues.If a message has been received indicating that the device 102 is to bethe bridge, the method 1300 moves to step 1326, where the device 102establishes sessions with the other devices, bridges the sessions, andcontinues the conference call as the bridge. The method 1300 then movesto step 1318, where the conference call continues with the new bridge.

Referring to FIG. 14, a sequence diagram illustrates one embodiment of amessage sequence 1400 that may occur in the environment of FIG. 1 toestablish a conference call, such as the conference call illustrated inFIG. 3A, where each of the devices 102, 104, and 106 is able to operateas a bridge for the call. For example, the sequence 1400 may be a morespecific embodiment of portions of the sequence 400 of FIG. 4. Signalingis accomplished via SIP and parameters are exchanged using SessionDescription Protocol (SDP) extensions. It is understood that the SIPsignaling, specific SIP messages, and the SDP extensions described inthe present embodiment are for purposes of example only, and that otherSIP messages, SDP fields, signaling protocols, and parameters formatsmay be used.

Prior to step 1402, the device 102 initiates the conference call. Thedevice 102 may assign an identifier, such as a thirty-two bit SSRC toeach participant of the conference call, or the participants mayadvertise their own SSRC (e.g., in steps 1406 and 1412). The identifiersmay be used to identify which stream belongs to which device 102, 104,and 106. It is noted that there may also be a call identifier that isassigned to each SIP session (i.e., there may be one call IDs for thesession between the devices 102 and 104 and another call ID for thesession between the devices 102 and 106).

In step 1402, the device 102 sends a request for a communication sessionto the device 104. The request may be a message such as a SIP INVITEthat contains SDP media parameters. For example, SDP generally providesfor session, time, and media descriptions as defined in IETF RFCs 2327and 4566, which are incorporated herein by reference in their entirety.Each of the session, time, and media description includes optionalfields. Accordingly, the request of step 1402 may include optionalfields in the media description, such as an “M” line media identifierfollowed by one or more “a” fields that provides zero or more mediaattribute lines. Using SDP fields such as the “a” fields, the device 102sends the codecs it has available for the communication session to thedevice 104. For example, the Common International Format (CIF) is usedin video teleconferencing systems and may be used. A related format isQuarter CIF (QCIF). The device 102 may include “a” fields in the SDPmedia description for “a=QCIF:1” and “a=CIF:2” to identify what thedevice 102 can support at the highest possible resolution. A descriptionof how to send CIF and QCIF over communication channels is detailed inRFC 4629, which is incorporated herein by reference in its entirety.

The message may also contain SDP fields representing device and networkparameters. For example, one of the SDP session description fields maybe extended in the form of a=<attribute>:<value> to represent the deviceand network parameters as “a=cpu:[speed]” (where speed is a knownprocessing speed such as 500 mhz), “a=memory:[memory size]” (wherememory size is the size of the available operating memory for theconference call], and “a=network:[type]” or “a=network:[rate]” (wheretype is a network type such as 3G, 4G, or wifi, and speed is anavailable network rate such as 56 Mbit/s upstream). It is understoodthat many different parameters and values may be provided in the SDPmessage or messages, may be placed in different fields, and may usedifferent values and/or identifiers.

One possible example of an INVITE message's contents is provided belowfor devices that are in a peer-to-peer environment, although a similaror identical message format may be used for non-peer-to-peer devices. Inthis example, the CPU is a=cpu:2253/2; where 2253 is the processor speedin megahertz and 2 is the number of processors. The device memory isa=mem:256m, where 256m is 256 Megabytes. The “m” may be replaced by a“k” to indicate Kilobytes or a “g” to indicate Gigabytes. The bandwidthis a=bw:1024dl/712ul, where 1024dl stands for 1024 kbps downlink and712ul stands for 712 uplink.

INVITE sip:p2p@damaka.com SIP/2.0

Via: SIP/2.0/UDP 192.168.1.10:5040;rport

Max-Forwards: 70

From: “P2P Mobile User”<sip:p2 pmobile@damaka.com>;tag=12345678

To: “P2P User”<sip:p2p@damaka.com>

Call-ID: 123456789@10.1.168.192

CSeq: 2 INVITE

Contact: <sip:192.168.1.10:5040>

User-Agent: damaka UA

Content-Type: application/sdp

Content-Length: . . .

v=0

o=−0 0 IN IP4 192.168.1.10

s=session

c=IN IP4 192.168.1.10

b=CT:1000

t=0 0

m=audio 54742 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

m=video 51071 RTP/AVP 34

a=rtpmap:34 H263/90000

a=cpu:2253/2

a=mem:256m

a=bw:1024dl/712ul

In step 1404, the communication device 104 responds to the INVITE with amessage such as a 100 TRY and, in step 1406, sends itsmedia/device/network parameters to the communication device 102 via SIPmessaging. It is noted that a message such as a SIP 200 OK or a similarmessage indicating call acceptance may not be used in step 1406 as thatmay connect the call and, in the present embodiment, the bridge deviceand media parameters have not yet been selected for the call. Thesignaling used in step 1406 may be a message such as a 180 Ringingmessage, a 183 Session Progress message, or a similar message thatindicates that the call has not been rejected or accepted.

The message may contain SDP fields representing parameters that definethe media supported by the device 104 from the options presented by thedevice 102 in step 1402. The message may also contain SDP fieldsrepresenting device and network parameters. For example, one of the SDPsession description fields may be extended in the form ofa=<attribute>:<value> to represent the device and network parameters as“a=cpu:[speed]” (where speed is a known processing speed such as 500mhz), “a=memory:[memory size]” (where memory size is the size of theavailable operating memory for the conference call], and“a=network:[type]” or “a=network:[rate]” (where type is a network typesuch as 3G, 4G, or wifi, and speed is an available network rate such as56 Mbit/s upstream). It is understood that many different parameters andvalues may be provided in the SDP message or messages, may be placed indifferent fields, and may use different values and/or identifiers.

In steps 1408, 1410, and 1412, the process of steps 1402, 1404, and 1406is repeated between the device 102 and the device 106. It is noted thatwhen the messages of steps 1406 and 1412 are sent, the users of thedevices 104 and 106 may not be aware of the setup. For example, theremay be a display message indicating that a video call is beingestablished or there may be no indication. In step 1414, the device 102selects the bridge and media parameters for the sessions. In steps 1416and 1418, the device 102 sends the selected media parameters to thedevices 104 and 106, respectively. In steps 1420 and 1422, the device102 establishes the sessions with the devices 104 and 106, respectively,and bridges and participates in the conference call in step 1424.

Referring to FIG. 15, a sequence diagram illustrates one embodiment of amessage sequence 1500 that may occur in the environment of FIG. 1 toshift a conference call bridge without consultation. For example, thesequence 1500 may be used to shift the bridge from the positionillustrated in FIG. 3A to the position illustrated in FIG. 3B. Each ofthe devices 102, 104, and 106 is able to operate as a bridge for thecall. For example, the sequence 1500 may be a more specific embodimentof a portion of the sequence 500 of FIG. 5. Signaling is accomplishedvia SIP and parameters are exchanged using SDP extensions. It isunderstood that the SIP signaling, specific SIP messages, and the SDPextensions described in the present embodiment are for purposes ofexample only, and that other SIP messages, SDP fields, signalingprotocols, and parameters formats may be used.

In step 1502, the device 102 performs a bridge selection process aspreviously described. In the present example, the device 102 selects thedevice 104 as the bridge and the bridge is to be shifted to the device104 without consultation. In other words, the device 102 has decided toshift the bridge and is instructing the device 104 that it is to be thenew bridge. Accordingly, in step 1504, the device 102 sends a SIPmessage such as a 302 Moved Temporarily to the device 104. The messagemay contain SDP fields identifying the device 104 as the conference callbridge and the devices 102, 104, and 106 as the conference callparticipants. In step 1506, the device 104 responds with a message suchas a 200 OK. In step 1508, the device 102 sends a similar or identicalmessage to the device 106 and, in step 1510, the device 106 respondswith a message such as a 200 OK. In step 1512, the device 104 sets upand bridges the conference call.

Referring to FIG. 16, a sequence diagram illustrates one embodiment of amessage sequence 1600 that may occur in the environment of FIG. 1 toshift a conference call bridge with consultation. For example, thesequence 1600 may be used to shift the bridge from the positionillustrated in FIG. 3A to the position illustrated in FIG. 3B. Each ofthe devices 102, 104, and 106 is able to operate as a bridge for thecall. For example, the sequence 1600 may be a more specific embodimentof a portion of the sequence 500 of FIG. 5. Signaling is accomplishedvia SIP and parameters are exchanged using SDP extensions. It isunderstood that the SIP signaling, specific SIP messages, and the SDPextensions described in the present embodiment are for purposes ofexample only, and that other SIP messages, SDP fields, signalingprotocols, and parameters formats may be used.

In step 1602, the device 102 performs a bridge selection process aspreviously described. In the present example, the device 102 selects thedevice 104 as the bridge and the bridge is to be shifted to the device104 with consultation. In other words, the device 102 has decided toshift the bridge and is requesting that the device 104 allow the shift.Accordingly, in step 1604, the device 102 sends a SIP message such as anUPDATE or INFO to the device 104. It is understood that the device 104may have previously sent a 180, 183, or similar message to the device102 as illustrated in step 1406 of FIG. 14, and is waiting for anacknowledgement. Instead, the device 104 receives a message such as anINFO or UPDATE, although other messages (e.g., an INVITE, a 200 OK, oranother message) may be used.

The message contains SDP fields identifying the device 104 as theconference call bridge and the devices 102, 104, and 106 as theconference call participants. In step 1606, the device 104 responds witha message such as a 200 OK. In step 1608, the device 102 sends a messagesuch as a 200 OK to the device 104 to acknowledge the shift. In step1610, the device 102 may send a message such as a 415 Unsupported MediaType or a 480 Temporarily Unavailable to the device 106, which mayterminate the session between the devices 102 and 106. In step 1612, thedevice 104 sets up and bridges the conference call.

Referring to FIG. 17, a sequence diagram illustrates one embodiment of amessage sequence 1700 that may occur in the environment of FIG. 1 when adevice/network change is detected and the bridge is not shifted. Each ofthe devices 102, 104, and 106 is able to operate as a bridge for thecall. For example, the sequence 1700 may be a more specific embodimentof a portion of the sequence 600 of FIG. 6. Signaling is accomplishedvia SIP and parameters are exchanged using SDP extensions. It isunderstood that the SIP signaling, specific SIP messages, and the SDPextensions described in the present embodiment are for purposes ofexample only, and that other SIP messages, SDP fields, signalingprotocols, and parameters formats may be used.

In step 1702, the device 104 detects a device/network change aspreviously described. In step 1704, the device 104 sends the changedparameters to the device 102 in a message such as a SIP UPDATE messagewith the changed parameters in SDP. In step 1706, the device 102 selectsthe bridge. In the present example, the device 102 selects itself as thebridge. In step 1708, the device 102 sends a message such as a 200 OK tothe device 104.

If the parameters have changed enough to need updating, the device 102may send the updated parameters to the device 104 in the 200 OK or in amessage such as an UPDATE message. Although not shown, the device 104may respond to the message of step 1708 with a message such as a 200 OK,particularly if the message included parameter changes. In step 1710,the device 102 may send the updated parameters to the device 106 in amessage such as an UPDATE message. It is noted that an UPDATE receivedduring a SIP transaction may have a different meaning than an UPDATEreceived after the transaction ends. While the transaction is occurring,there is no need to go to the SIP dialog. After the transaction hasended, the dialog is needed. In the present case, the UPDATE of step1710 is outside of a transaction and within the dialog. Accordingly, thedevice 106 may recognize the UPDATE as a mid-call transition notifyingthe device 106 of new session parameters. In step 1712, the device 106may respond with a message such as a 200 OK. The device 102 may continueto bridge the conference call in step 1714.

Referring to FIG. 18, a sequence diagram illustrates one embodiment of amessage sequence 1800 that may occur in the environment of FIG. 1 when adevice/network change is detected and the bridge is shifted. Each of thedevices 102, 104, and 106 is able to operate as a bridge for the call.For example, the sequence 1800 may be a more specific embodiment of aportion of the sequence 700 of FIG. 7. Signaling is accomplished via SIPand parameters are exchanged using SDP extensions. It is understood thatthe SIP signaling, specific SIP messages, and the SDP extensionsdescribed in the present embodiment are for purposes of example only,and that other SIP messages, SDP fields, signaling protocols, andparameters formats may be used.

Although not shown, prior to step 1802, a message such as an UPDATEmessage may have occurred after the device 104 detected a device/networkchange as described with respect to steps 1702 and 1704 of FIG. 17. Instep 1802, the device 102 selects the bridge. In the present example,the device 102 selects the device 104 as the bridge. In steps 1804 and1806, the device 102 sends messages such as BYEs to the devices 104 and106, respectively, to terminate the sessions. In step 1808, the device102 may send a message such as an UPDATE message to the device 104 toindicate the bridge shift. In step 1810, the device 104 sets up andbridges the conference call.

Although not shown, in embodiments where the device 102 detects adevice/network change related to the device 102, the device 102 may senda message such a REFER to the devices 104 and 106 to forward thesessions. The device 102 may then perform bridge selection and eitherremain the bridge or transfer the bridge as described previously.

Referring to FIG. 19, one embodiment of a peer-to-peer hybrid system1900 is illustrated. The system 1900 includes an access server 1902 thatis coupled to endpoints 1904 and 1906 (e.g., communication devices 102and 104 of FIG. 1) via a packet network 1908 (e.g., a part or all of thenetwork 108). Communication between the access server 1902, endpoint1904, and endpoint 1906 is accomplished using predefined and publiclyavailable (i.e., non-proprietary) communication standards or protocols(e.g., those defined by the IETF or the ITU-T). For example, signalingcommunications (e.g., session setup, management, and teardown) may use aprotocol such as SIP, while actual data traffic may be communicatedusing a protocol such as RTP. As will be seen in the following examples,the use of standard protocols for communication enables the endpoints1904 and 1906 to communicate with any device that uses the samestandards. The communications may include, but are not limited to, voicecalls, instant messages, audio and video, emails, and any other type ofresource transfer, where a resource represents any digital data. In thefollowing description, media traffic is generally based on UDP, whileauthentication is based on TCP/IP. However, it is understood that theseare used for purposes of example and that other protocols may be used inaddition to or instead of UDP and TCP/IP.

Connections between the access server 1902, endpoint 1904, and endpoint1906 may include wireline and/or wireless communication channels. In thefollowing description, it is understood that the term “direct” meansthat there is no endpoint or access server in the communicationchannel(s) between the endpoints 1904 and 1906, or between eitherendpoint and the access server. Accordingly, the access server 1902,endpoint 1904, and endpoint 1906 are directly connected even if otherdevices (e.g., routers, firewalls, and other network elements) arepositioned between them. In addition, connections to endpoints,locations, or services may be subscription based, with an endpoint onlyhaving access if the endpoint has a current subscription. Furthermore,the following description may use the terms “user” and “endpoint”interchangeably, although it is understood that a user may be using anyof a plurality of endpoints. Accordingly, if an endpoint logs in to thenetwork, it is understood that the user is logging in via the endpointand that the endpoint represents the user on the network using theuser's identity.

The access server 1902 stores profile information for a user, a sessiontable to track what users are currently online, and a routing table thatmatches the address of an endpoint to each online user. The profileinformation includes a “buddy list” for each user that identifies otherusers (“buddies”) that have previously agreed to communicate with theuser. Online users on the buddy list will show up when a user logs in,and buddies who log in later will directly notify the user that they areonline (as described with respect to FIG. 22). The access server 1902provides the relevant profile information and routing table to each ofthe endpoints 1904 and 1906 so that the endpoints can communicatedirectly with one another. Accordingly, in the present embodiment, onefunction of the access server 1902 is to serve as a storage location forinformation needed by an endpoint in order to communicate with otherendpoints and as a temporary storage location for requests, voicemails,etc., as will be described later in greater detail.

With additional reference to FIG. 20 a, one embodiment of anarchitecture 2000 for the access server 1902 of FIG. 19 is illustrated.The architecture 2000 includes functionality that may be provided byhardware and/or software, and that may be combined into a singlehardware platform or distributed among multiple hardware platforms. Forpurposes of illustration, the access server in the following examples isdescribed as a single device, but it is understood that the term appliesequally to any type of environment (including a distributed environment)in which at least a portion of the functionality attributed to theaccess server is present.

In the present example, the architecture includes web services 2002(e.g., based on functionality provided by XML, SOAP, .NET, MONO), webserver 2004 (using, for example, Apache or IIS), and database 2006(using, for example, mySQL or SQLServer) for storing and retrievingrouting tables 2008, profiles 2010, and one or more session tables 2012.Functionality for a STUN (Simple Traversal of UDP through NATs (NetworkAddress Translation)) server 2014 is also present in the architecture2000. As is known, STUN is a protocol for assisting devices that arebehind a NAT firewall or router with their packet routing. Thearchitecture 2000 may also include a redirect server 2016 for handlingrequests originating outside of the system 1900. One or both of the STUNserver 2014 and redirect server 2016 may be incorporated into the accessserver 1902 or may be a standalone device. In the present embodiment,both the server 2004 and the redirect server 2016 are coupled to thedatabase 2006.

Referring to FIG. 20 b, one embodiment of an architecture 2050 for theendpoint 1904 (which may be similar or identical to the endpoint 1906)of FIG. 19 is illustrated. It is understood that that term “endpoint”may refer to many different devices having some or all of the describedfunctionality, including a computer, a VoIP telephone, a personaldigital assistant, a cellular phone, or any other device having an IPstack upon which the needed protocols may be run. Such devices generallyinclude a network interface, a controller coupled to the networkinterface, a memory coupled to the controller, and instructionsexecutable by the controller and stored in the memory for performing thefunctions described in the present application. Data needed by anendpoint may also be stored in the memory. The architecture 2050includes an endpoint engine 2052 positioned between a graphical userinterface (GUI) 2054 and an operating system 2056. The GUI 2054 providesuser access to the endpoint engine 2052, while the operating system 2056provides underlying functionality, as is known to those of skill in theart.

The endpoint engine 2052 may include multiple components and layers thatsupport the functionality required to perform the operations of theendpoint 1904. For example, the endpoint engine 2052 includes asoftswitch 2058, a management layer 2060, an encryption/decryptionmodule 2062, a feature layer 2064, a protocol layer 2066, aspeech-to-text engine 2068, a text-to-speech engine 2070, a languageconversion engine 2072, an out-of-network connectivity module 2074, aconnection from other networks module 2076, a p-commerce (e.g., peercommerce) engine 2078 that includes a p-commerce agent and a p-commercebroker, and a cellular network interface module 2080.

Each of these components/layers may be further divided into multiplemodules. For example, the softswitch 2058 includes a call controlmodule, an instant messaging (IM) control module, a resource controlmodule, a CALEA (Communications Assistance to Law Enforcement Act)agent, a media control module, a peer control module, a signaling agent,a fax control module, and a routing module.

The management layer 2060 includes modules for presence (i.e., networkpresence), peer management (detecting peers and notifying peers of beingonline), firewall management (navigation and management), mediamanagement, resource management, profile management, authentication,roaming, fax management, and media playback/recording management.

The encryption/decryption module 2062 provides encryption for outgoingpackets and decryption for incoming packets. In the present example, theencryption/decryption module 2062 provides application level encryptionat the source, rather than at the network. However, it is understoodthat the encryption/decryption module 2062 may provide encryption at thenetwork in some embodiments.

The feature layer 2064 provides support for various features such asvoice, video, IM, data, voicemail, file transfer, file sharing, class 5features, short message service (SMS), interactive voice response (IVR),faxes, and other resources. The protocol layer 2066 includes protocolssupported by the endpoint, including SIP, HTTP, HTTPS, STUN, RTP, SRTP,and ICMP. It is understood that these are examples only, and that feweror more protocols may be supported.

The speech-to-text engine 2068 converts speech received by the endpoint(e.g., via a microphone or network) into text, the text-to-speech engine2070 converts text received by the endpoint into speech (e.g., foroutput via a speaker), and the language conversion engine 2072 may beconfigured to convert inbound or outbound information (text or speech)from one language to another language. The out-of-network connectivitymodule 2074 may be used to handle connections between the endpoint andexternal devices, and the connection from other networks module 2076handles incoming connection attempts from external devices. The cellularnetwork interface module 2080 may be used to interact with a wirelessnetwork.

With additional reference to FIG. 20 c, the cellular network interfacemodule 2080 is illustrated in greater detail. Although not shown in FIG.20 b, the softswitch 2058 of the endpoint architecture 2050 includes acellular network interface for communication with the cellular networkinterface module 2080. In addition, the cellular network interfacemodule 2080 includes various components such as a call control module, asignaling agent, a media manager, a protocol stack, and a deviceinterface. It is noted that these components may correspond to layerswithin the endpoint architecture 2050 and may be incorporated directlyinto the endpoint architecture in some embodiments.

Referring to FIG. 20 d, a traditional softswitch architecture isillustrated with two endpoints 2082 and 2084, neither of which includesa softswitch. In the present example, an external softswitch 2086maintains a first signaling leg (dotted line) with the endpoint 2082 anda second signaling leg (dotted line) with the endpoint 2084. Thesoftswitch 2086 links the two legs to pass signaling information betweenthe endpoints 2082 and 2084. Media traffic (solid lines) may betransferred between the endpoints 2082 and 2084 via a media gateway2087.

With additional reference to FIG. 20 e, the traditional softswitcharchitecture of FIG. 20 d is illustrated with a third endpoint 2088 thatalso does not include a softswitch. The external softswitch 2086 nowmaintains a third signaling leg (dotted line) with the endpoint 2088. Inthe present example, a conference call is underway. However, as none ofthe endpoints includes a softswitch, a media bridge 2090 connected toeach endpoint is needed for media traffic. Accordingly, each endpointhas at most two concurrent connections—one with the softswitch forsignaling and another with the media bridge for media traffic.

Referring to FIG. 20 f, in one embodiment, unlike the traditionalarchitecture of FIGS. 20 d and 20 e, two endpoints (e.g., the endpoints1904 and 1906 of FIG. 19) each include a softswitch (e.g., thesoftswitch 2058 of FIG. 20 b). Each endpoint is able to establish andmaintain both signaling and media traffic connections (both virtual andphysical legs) with the other endpoint. Accordingly, no externalsoftswitch is needed, as this model uses a distributed softswitch methodto handle communications directly between the endpoints.

With additional reference to FIG. 20 g, the endpoints 1904 and 1906 areillustrated with another endpoint 2092 that also contains a softswitch.In this example, a conference call is underway with the endpoint 1904acting as the host. To accomplish this, the softswitch contained in theendpoint 1904 enables the endpoint 1904 to support direct signaling andmedia traffic connections with the endpoint 2092. The endpoint 1904 canthen forward media traffic from the endpoint 1906 to the endpoint 2092and vice versa. Accordingly, the endpoint 1904 may support multipleconnections to multiple endpoints and, as in FIG. 20 f, no externalsoftswitch is needed.

Referring again to FIG. 20 b, in operation, the softswitch 2058 usesfunctionality provided by underlying layers to handle connections withother endpoints and the access server 1902, and to handle servicesneeded by the endpoint 1904. For example, as is described below ingreater detail with respect to FIGS. 21 a and 21 b, incoming andoutgoing calls may utilize multiple components within the endpointarchitecture 2050.

Referring to FIG. 21 a, a sequence diagram 2100 illustrates an exemplaryprocess by which the endpoint 1904 may initiate a call to the endpoint1906 using various components of the architecture 2050. Prior to step2102, a user (not shown) initiates a call via the GUI 2054. In step2102, the GUI 2054 passes a message to the call control module (of thesoftswitch 2058) to make the call. The call control module contacts thepeer control module (softswitch 2058) in step 2104, which detects thepeer (if not already done), goes to the routing table (softswitch 2058)for the routing information, and performs similar operations. It isunderstood that not all interactions are illustrated. For example, thepeer control module may utilize the peer management module (of themanagement layer 2060) for the peer detection. The call control modulethen identifies a route for the call in step 2106, and sends message tothe SIP protocol layer (of the protocol layer 2066) to make the call instep 2108. In step 2110, the outbound message is encrypted (using theencryption/decryption module 2062) and the message is sent to thenetwork via the OS 2056 in step 2112.

After the message is sent and prior to receiving a response, the callcontrol module instructs the media control module (softswitch 2058) toestablish the needed near-end media in step 2114. The media controlmodule passes the instruction to the media manager (of the managementlayer 2060) in step 2116, which handles the establishment of thenear-end media.

With additional reference to FIG. 21 b, the message sent by the endpoint1904 in step 2112 (FIG. 21 a) is received by the endpoint 1906 andpassed from the OS to the SIP protocol layer in step 2152. The messageis decrypted in step 2154 and the call is offered to the call controlmodule in step 2156. The call control module notifies the GUI of anincoming call in step 2158 and the GUI receives input identifyingwhether the call is accepted or rejected (e.g., by a user) in step 2160.In the present example, the call is accepted and the GUI passes theacceptance to the call control module in step 2162. The call controlmodule contacts the peer control module in step 2164, which identifies aroute to the calling endpoint and returns the route to the call controlmodule in step 2166. In steps 2168 and 2170, the call control moduleinforms the SIP protocol layer that the call has been accepted and themessage is encrypted using the encryption/decryption module. Theacceptance message is then sent to the network via the OS in step 2172.

In the present example, after the call control module passes theacceptance message to the SIP protocol layer, other steps may occur toprepare the endpoint 1906 for the call. For example, the call controlmodule instructs the media control module to establish near-end media instep 2174, and the media control module instructs the media manager tostart listening to incoming media in step 2176. The call control modulealso instructs the media control module to establish far-end media (step2178), and the media control module instructs the media manager to starttransmitting audio in step 2180.

Returning to FIG. 21 a, the message sent by the endpoint 1906 (step2172) is received by the OS and passed on to the SIP protocol layer instep 2118 and decrypted in step 2120. The message (indicating that thecall has been accepted) is passed to the call control module in step2122 and from there to the GUI in step 2124. The call control modulethen instructs the media control module to establish far-end media instep 2126, and the media control module instructs the media manager tostart transmitting audio in step 2128.

The following figures are sequence diagrams that illustrate variousexemplary functions and operations by which the access server 1902 andthe endpoints 1904 and 1906 may communicate. It is understood that thesediagrams are not exhaustive and that various steps may be excluded fromthe diagrams to clarify the aspect being described.

Referring to FIG. 22 (and using the endpoint 1904 as an example), asequence diagram 2200 illustrates an exemplary process by which theendpoint 1904 may authenticate with the access server 1902 and thencommunicate with the endpoint 1906. As will be described, afterauthentication, all communication (both signaling and media traffic)between the endpoints 1904 and 1906 occurs directly without anyintervention by the access server 1902. In the present example, it isunderstood that neither endpoint is online at the beginning of thesequence, and that the endpoints 1904 and 1906 are “buddies.” Asdescribed above, buddies are endpoints that have both previously agreedto communicate with one another.

In step 2202, the endpoint 1904 sends a registration and/orauthentication request message to the access server 1902. If theendpoint 1904 is not registered with the access server 1902, the accessserver will receive the registration request (e.g., user ID, password,and email address) and will create a profile for the endpoint (notshown). The user ID and password will then be used to authenticate theendpoint 1904 during later logins. It is understood that the user ID andpassword may enable the user to authenticate from any endpoint, ratherthan only the endpoint 1904.

Upon authentication, the access server 1902 updates a session tableresiding on the server to indicate that the user ID currently associatedwith the endpoint 1904 is online. The access server 1902 also retrievesa buddy list associated with the user ID currently used by the endpoint1904 and identifies which of the buddies (if any) are online using thesession table. As the endpoint 1906 is currently offline, the buddy listwill reflect this status. The access server 1902 then sends the profileinformation (e.g., the buddy list) and a routing table to the endpoint1904 in step 2204. The routing table contains address information foronline members of the buddy list. It is understood that steps 2202 and2204 represent a make and break connection that is broken after theendpoint 1904 receives the profile information and routing table.

In steps 2206 and 2208, the endpoint 1906 and access server 1902 repeatsteps 2202 and 2204 as described for the endpoint 1904. However, becausethe endpoint 1904 is online when the endpoint 1906 is authenticated, theprofile information sent to the endpoint 1906 will reflect the onlinestatus of the endpoint 1904 and the routing table will identify how todirectly contact it. Accordingly, in step 2210, the endpoint 1906 sendsa message directly to the endpoint 1904 to notify the endpoint 1904 thatthe endpoint 1906 is now online. This also provides the endpoint 1904with the address information needed to communicate directly with theendpoint 1906. In step 2212, one or more communication sessions may beestablished directly between the endpoints 1904 and 1906.

Additional details of endpoints and endpoint functionality, includingrouting and NAT traversal functionality that may be used to establishand maintain a sharing session as described herein, are provided in U.S.Pat. No. 7,656,870, filed on Mar. 15, 2005, and entitled SYSTEM ANDMETHOD FOR PEER-TO-PEER HYBRID COMMUNICATIONS; U.S. Pat. No. 7,570,636,filed on Aug. 30, 2005, and entitled SYSTEM AND METHOD FOR TRAVERSING ANAT DEVICE FOR PEER-TO-PEER HYBRID COMMUNICATIONS; and U.S. patentapplication Ser. No. 12/705,925, filed on Feb. 15, 2010, and entitledSYSTEM AND METHOD FOR STRATEGIC ROUTING IN A PEER-TO-PEER ENVIRONMENT,as previously incorporated by reference in their entirety.

Accordingly, described above are embodiments illustrating how aconference call bridge may be transferred between communication devices,one or more of which may be an endpoint in a peer-to-peer network.

In another embodiment, a method for selecting a communication device asa bridge for a conference call comprises sending, by a firstcommunication device, a first request for a first communication sessionto a second communication device and a second request for a secondcommunication session to a third communication device; receiving, by thefirst communication device, a first set of parameters identifying media,device, and network capabilities of the second communication device anda second set of parameters identifying media, device, and networkcapabilities of the third communication device; determining, by thefirst communication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callbetween the first, second, and third communication devices based on thedevice and network parameters identified in the first and second sets ofparameters and a third set of parameters identifying device and networkcapabilities of the first communication device; sending, by the firstcommunication device, first session parameters for the firstcommunication session to the second communication device and secondsession parameters for the second communication session to the thirdcommunication device if the first communication device determines thatthe first communication device is to operate as the bridge, wherein thefirst and second session parameters contain media parameters to be usedfor the first and second communication sessions, respectively;establishing, by the first communication device, the first communicationsession with the second communication device based on the first sessionparameters and the second communication session with the thirdcommunication device based on the second session parameters; andbridging, by the first communication device, the first and secondcommunication sessions to provide the conference call for the first,second, and third communication devices. The method may further compriseselecting, by the first communication device, the second communicationdevice as the bridge if the first communication device determines thatthe second communication device should be the bridge based on the deviceand network parameters identified in the first, second, and third setsof parameters; and transferring, by the first communication device, thebridge to the second communication device if the second communicationdevice is selected as the bridge. The transferring may include sending,by the first communication device, a message to the second communicationdevice that the second communication device is to be the bridge; andsending, by the first communication device, a message to the thirdcommunication device that the second communication session is beingclosed. The determining, by the first communication device, which of thefirst, second, and third communication devices is to serve as the bridgefor the conference call may include comparing at least one of aprocessing capability, an available memory, and an available networkbandwidth of the first, second, and third communication devices toidentify which of the first, second, and third communication devices hasat least one of the highest processing capability, the most availablememory, and the most available network bandwidth. The determining, bythe first communication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callmay include selecting the second communication device as the bridge onlyif the second communication device has the highest processingcapability, the most available memory, and the most available networkbandwidth compared to the first and third communication devices. Themethod may further comprise receiving, by the first communicationdevice, a message from the second communication device indicating achange in at least one of the device and network capabilities of thesecond communication device; and re-determining, by the firstcommunication device, which of the first and second communicationdevices is to serve as the bridge for the conference call based on thechange in the at least one of the device and network capabilities of thesecond communication device. The method may further comprisetransferring, by the first communication device, the bridge to thesecond communication device if the re-determining identifies that thesecond communication device should serve as the bridge. The method mayfurther comprise detecting, by the first communication device, a changein at least one of the device and network capabilities of the firstcommunication device; and re-determining, by the first communicationdevice, which of the first, second, and third communication devices isto serve as the bridge for the conference call based on the change inthe at least one of the device and network capabilities of the firstcommunication device. The method may further comprise transferring, bythe first communication device, the bridge to the second communicationdevice if the re-determining identifies that the second communicationdevice should serve as the bridge. The method may further compriseselecting the first and second session parameters based on the mediacapabilities of the first, second, and third communication devices,wherein the first and second session parameters are normalized to asingle set of session parameters that can be used with both the secondand third communication devices. The method may further compriseselecting the first and second session parameters based on the mediacapabilities of the first, second, and third communication devices,wherein the first session parameters are optimized for the secondcommunication device and the second session parameters are optimized forthe third communication device. The media parameters may include atleast one of an audio codec and a video codec supported by each of thesecond and third communication devices. The method may further comprisereceiving, by the first communication device, a request from a fourthcommunication device to join the conference call; receiving, by thefirst communication device, a fourth set of parameters identifyingmedia, device, and network capabilities of the fourth communicationdevice; and re-determining, by the first communication device, which ofthe first, second, third, and fourth communication devices is to serveas the bridge for the conference call based on the first, second, third,and fourth sets of parameters. The method may further comprisetransferring, by the first communication device, the bridge to thefourth communication device if the re-determining identifies that thefourth communication device should serve as the bridge. The method mayfurther comprise receiving, by the first communication device, a requestfrom a fourth communication device to join the conference call, whereinthe fourth communication device is not configured to serve as a bridge;and adding, by the first communication device, the fourth communicationto the conference call without re-determining which of the first,second, third, and fourth communication devices is to serve as thebridge. The first request may contain media options available on thefirst communication device for the first communication session. Thefirst request may be a Session Initiation Protocol message and the mediaoptions are in a Session Description Protocol (SDP) format. The firstand second communication devices may be peer-to-peer devices thatcommunicate directly with each other and wherein the method may furthercomprise establishing, by the first communication device, a peer-to-peersession with the second communication device prior to sending the firstrequest.

In still another embodiment, a method for use by a first communicationdevice comprises receiving, by a first communication device, a requestfor a communication session from a second communication device, whereinthe communication session is for a conference call and the requestidentifies the second communication device and a third communicationdevice as participants in the conference call; sending, by the firstcommunication device, media, device, and network parameters of the firstcommunication device to the second communication device; receiving, bythe first communication device, a notification from the secondcommunication device, wherein the notification informs the firstcommunication device that the first communication device is to serve asa conference call bridge for the conference call; establishing, by thefirst communication device, a first communication session with the firstcommunication device and a second communication session with the thirdcommunication device in response to the notification; and bridging, bythe first communication device, the first and second communicationsessions to provide the conference call for the first, second, and thirdcommunication devices. The method may further comprise determining, bythe first communication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callbetween the first, second, and third communication devices based ondevice and network parameters of each of the first, second, and thirdcommunication devices. The determining, by the first communicationdevice, which of the first, second, and third communication devices isto serve as the bridge for the conference call may include comparing atleast one of a processing capability, an available memory, and anavailable network bandwidth of the first, second, and thirdcommunication devices to identify which of the first, second, and thirdcommunication devices has at least one of the highest processingcapability, the most available memory, and the most available networkbandwidth. The establishing, by the first communication device, thefirst and second communication sessions may include: sending a firstrequest to the second communication device for the first communicationsession and a second request to the third communication device for thesecond communication session; receiving media parameters from each ofthe second and third communication devices; and selecting sessionparameters for the first communication session based on the mediaparameters received from the second communication device and sessionparameters for the second communication session based on the mediaparameters received from the third communication device. The method mayfurther comprise detecting, by the first communication device, a changein at least one of the device and network capabilities of the firstcommunication device; and re-determining, by the first communicationdevice, which of the first, second, and third communication devices isto serve as the bridge for the conference call based on the change inthe at least one of the device and network capabilities of the firstcommunication device. The method may further comprise transferring, bythe first communication device, the bridge to the second communicationdevice if the re-determining identifies that the second communicationdevice should serve as the bridge.

In yet another embodiment, a communication device comprises a networkinterface; a processor coupled to the network interface; and a memorycoupled to the processor and containing a plurality of instructions forexecution by the processor, the instructions including instructions forsending a first request for a first communication session to a secondcommunication device and a second request for a second communicationsession to a third communication device; receiving a first set ofparameters identifying media, device, and network capabilities of thesecond communication device and a second set of parameters identifyingmedia, device, and network capabilities of the third communicationdevice; determining which of the first, second, and third communicationdevices is to serve as the bridge for the conference call between thefirst, second, and third communication devices based on the device andnetwork parameters identified in the first and second sets ofparameters; selecting the second communication device as the bridge ifthe first communication device determines that the second communicationdevice should be the bridge based on the device and network parametersidentified in the first and second sets of parameters; transferring thebridge to the second communication device if the second communicationdevice is selected as the bridge; establishing a first communicationsession with the second communication device based on the mediacapabilities identified in the first set of parameters and a secondcommunication session with the third communication device based on themedia capabilities identified in the second set of parameters if thefirst communication device determines that the first communicationdevice is to operate as the bridge; and bridging the first and secondcommunication sessions to provide the conference call for the first,second, and third communication devices.

While the preceding description shows and describes one or moreembodiments, it will be understood by those skilled in the art thatvarious changes in form and detail may be made therein without departingfrom the spirit and scope of the present disclosure. For example,various steps illustrated within a particular sequence diagram or flowchart may be combined or further divided. In addition, steps describedin one diagram or flow chart may be incorporated into another diagram orflow chart. Some steps may be performed in an order different from thatshown and/or may overlap. Furthermore, the described functionality maybe provided by hardware and/or software, and may be distributed orcombined into a single platform. Additionally, functionality describedin a particular example may be achieved in a manner different than thatillustrated, but is still encompassed within the present disclosure.Therefore, the claims should be interpreted in a broad manner,consistent with the present disclosure.

What is claimed is:
 1. A method for selecting a communication device asa bridge for a conference call comprising: sending, by a firstcommunication device, a first request for a first communication sessionto a second communication device and a second request for a secondcommunication session to a third communication device; receiving, by thefirst communication device, a first set of parameters identifying media,device, and network capabilities of the second communication device anda second set of parameters identifying media, device, and networkcapabilities of the third communication device; determining, by thefirst communication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callbetween the first, second, and third communication devices based on thedevice and network capabilities identified in the first and second setsof parameters and a third set of parameters identifying device andnetwork capabilities of the first communication device; sending, by thefirst communication device, first session parameters for the firstcommunication session to the second communication device and secondsession parameters for the second communication session to the thirdcommunication device if the first communication device determines thatthe first communication device is to operate as the bridge, wherein thefirst and second session parameters contain media parameters to be usedfor the first and second communication sessions, respectively;establishing, by the first communication device, the first communicationsession with the second communication device based on the first sessionparameters and the second communication session with the thirdcommunication device based on the second session parameters; andbridging, by the first communication device, the first and secondcommunication sessions to provide the conference call for the first,second, and third communication devices.
 2. The method of claim 1further comprising: selecting, by the first communication device, thesecond communication device as the bridge if the first communicationdevice determines that the second communication device should be thebridge based on the device and network capabilities identified in thefirst, second, and third sets of parameters; and transferring, by thefirst communication device, the bridge to the second communicationdevice if the second communication device is selected as the bridge. 3.The method of claim 2 wherein the transferring includes: sending, by thefirst communication device, a message to the second communication devicethat the second communication device is to be the bridge; and sending,by the first communication device, a message to the third communicationdevice that the second communication session is being closed.
 4. Themethod of claim 1 wherein the determining, by the first communicationdevice, which of the first, second, and third communication devices isto serve as the bridge for the conference call includes comparing atleast one of a processing capability, an available memory, and anavailable network bandwidth of the first, second, and thirdcommunication devices to identify which of the first, second, and thirdcommunication devices has at least one of the highest processingcapability, the most available memory, and the most available networkbandwidth.
 5. The method of claim 4 wherein the determining, by thefirst communication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callincludes selecting the second communication device as the bridge only ifthe second communication device has the highest processing capability,the most available memory, and the most available network bandwidthcompared to the first and third communication devices.
 6. The method ofclaim 1 further comprising: receiving, by the first communicationdevice, a message from the second communication device indicating achange in at least one of the device and network capabilities of thesecond communication device; and re-determining, by the firstcommunication device, which of the first and second communicationdevices is to serve as the bridge for the conference call based on thechange in the at least one of the device and network capabilities of thesecond communication device.
 7. The method of claim 6 further comprisingtransferring, by the first communication device, the bridge to thesecond communication device if the re-determining identifies that thesecond communication device should serve as the bridge.
 8. The method ofclaim 1 further comprising: detecting, by the first communicationdevice, a change in at least one of the device and network capabilitiesof the first communication device; and re-determining, by the firstcommunication device, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callbased on the change in the at least one of the device and networkcapabilities of the first communication device.
 9. The method of claim 8further comprising transferring, by the first communication device, thebridge to the second communication device if the re-determiningidentifies that the second communication device should serve as thebridge.
 10. The method of claim 1 further comprising selecting the firstand second session parameters based on the media capabilities of thefirst, second, and third communication devices, wherein the first andsecond session parameters are normalized to a single set of sessionparameters that can be used with both the second and third communicationdevices.
 11. The method of claim 1 further comprising selecting thefirst and second session parameters based on the media capabilities ofthe first, second, and third communication devices, wherein the firstsession parameters are optimized for the second communication device andthe second session parameters are optimized for the third communicationdevice.
 12. The method of claim 1 wherein the media parameters includeat least one of an audio codec and a video codec supported by each ofthe second and third communication devices.
 13. The method of claim 1further comprising: receiving, by the first communication device, arequest from a fourth communication device to join the conference call;receiving, by the first communication device, a fourth set of parametersidentifying media, device, and network capabilities of the fourthcommunication device; and re-determining, by the first communicationdevice, which of the first, second, third, and fourth communicationdevices is to serve as the bridge for the conference call based on thefirst, second, third, and fourth sets of parameters.
 14. The method ofclaim 13 further comprising transferring, by the first communicationdevice, the bridge to the fourth communication device if there-determining identifies that the fourth communication device shouldserve as the bridge.
 15. The method of claim 1 further comprising:receiving, by the first communication device, a request from a fourthcommunication device to join the conference call, wherein the fourthcommunication device is not configured to serve as a bridge; and adding,by the first communication device, the fourth communication to theconference call without re-determining which of the first, second,third, and fourth communication devices is to serve as the bridge. 16.The method of claim 1 wherein the first request contains media optionsavailable on the first communication device for the first communicationsession.
 17. The method of claim 16 wherein the first request is aSession Initiation Protocol message and the media options are in aSession Description Protocol (SDP) format.
 18. The method of claim 16wherein the first and second communication devices are peer-to-peerdevices that communicate directly with each other and wherein the methodfurther comprises establishing, by the first communication device, apeer-to-peer session with the second communication device prior tosending the first request.
 19. A method for use by a first communicationdevice comprising: receiving, by a first communication device, a requestfor a communication session from a second communication device, whereinthe communication session is for a conference call and the requestidentifies the second communication device and a third 5 communicationdevice as participants in the conference call; sending, by the firstcommunication device, a set of parameters identifying media, device, andnetwork capabilities of the first communication device to the secondcommunication device; receiving, by the first communication device, anotification from the second communication device, wherein thenotification informs the first communication device that the firstcommunication device is to serve as a conference call bridge for theconference call; establishing, by the first communication device, afirst communication session with the first communication device and asecond communication session with the third communication device inresponse to the notification; bridging, by the first communicationdevice, the first and second communication sessions to provide theconference call for the first, second, and third communication devices;detecting, by the first communication device, a change in at least oneof the device and network capabilities of the first communicationdevice; and determining, by the first communication device in responseto detecting the change, which of the first, second, and thirdcommunication devices is to serve as the bridge for the conference callbetween the first, second, and third communication devices based ondevice and network capabilities of each of each of the first, second,and third communication devices.
 20. The method of claim 19 wherein thedetermining, by the first communication device, which of the first,second, and third communication devices is to serve as the bridge forthe conference call includes comparing at least one of a processingcapability, an available memory, and an available network bandwidth ofthe first, second, and third communication.
 21. The method of claim 19wherein establishing, by the first communication device, the first andsecond communication sessions includes: sending a first request to thesecond communication device for the first communication session and asecond request to the third communication device for the secondcommunication session; receiving media parameters from each of thesecond and third communication devices; and selecting session parametersfor the first communication session based on the media parametersreceived from the second communication device and session parameters forthe second communication session based on the media parameters receivedfrom the third communication device.
 22. The method of claim 19 furthercomprising transferring, by the first communication device, the bridgeto the second communication device if the determining identifies thatthe second communication device should serve as the bridge.
 23. Acommunication device comprising: a network interface; a processorcoupled to the network interface; and a memory coupled to the processorand containing a plurality of instructions for execution by theprocessor, the instructions including instructions for sending a firstrequest for a first communication session to a second communicationdevice and a second request for a second communication session to athird communication device; receiving a first set of parametersidentifying media, device, and network capabilities of the secondcommunication device and a second set of parameters identifying media,device, and network capabilities of the third communication device;determining which of the first, second, and third communication devicesis to serve as the bridge for the conference call between the first,second, and third communication devices based on the device and networkcapabilities identified in the first and second sets of parameters;selecting the second communication device as the bridge if the firstcommunication device determines that the second communication deviceshould be the bridge based on the device and network capabilitiesidentified in the first and second sets of parameters; transferring thebridge to the second communication device if the second communicationdevice is selected as the bridge; establishing a first communicationsession with the second communication device based on the mediacapabilities identified in the first set of parameters and a secondcommunication session with the third communication device based on themedia capabilities identified in the second set of parameters if thefirst communication device determines that the first communicationdevice is to operate as the bridge; and bridging the first and secondcommunication sessions to provide the conference call for the first,second, and third communication devices.